In [1]:
%pylab inline

from IPython.core.display import HTML
Populating the interactive namespace from numpy and matplotlib
In [2]:
HTML('''<script>
code_show=true;
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit"
value="Click here to toggle on/off the raw code."></form>''')
Out[2]:
In [3]:
rc('text', usetex=True)  # az abran a xticks, yticks fontjai LaTeX fontok lesznek 
In [4]:
#from sympy.mpmath import *
import mpmath as mpmath
In [5]:
from scipy.integrate import * # az integráló rutinok betöltése
from ipywidgets import *  # az interaktivitásért felelős csomag

import matplotlib.pyplot as plt
In [6]:
# Abra es fontmeretek
xfig_meret= 9   #    12 nagy abrahoz
yfig_meret= 6    #   12 nagy abrahoz
xyticks_meret= 15  #  20 nagy abrahoz
xylabel_meret= 21  #  30 nagy abrahoz
legend_meret= 21   #  30 nagy abrahoz

Ideális Bose-gáz

(Cserti József, ELTE Komplex Rendszerek Fizikája Tanszék, 2016. február)

Néhány alapvető formula:

Bose-Einstein integrál:

\begin{align} g_{s}(z) &=\frac{1}{\Gamma(s)}\,\intop_{0}^{\infty}\frac{x^{s-1}dx}{\frac{1}{z}e^{x}-1}\label{eq:g_s_z}\\[1ex] \zeta(s) &=\sum_{k=1}^{\infty}\frac{1}{k^{s}}=\frac{1}{\Gamma(s)}\,\intop_{0}^{\infty}\frac{x^{s-1}dx}{e^{x}-1} = g_s(1) \label{eq:zeta_def} \end{align}

A $g_s(z)$ függvényt az irodalomban polylogaritmus függvénynek (Polylogarithm function) is nevezik, és a jelölése: $Li_s(z)$,

\begin{align} g_{s}(z) & \equiv Li_s(s) = \sum_{k=1}^\infty \, \frac{z^k}{k^s}= z+ \frac{z^2}{2^s} + \frac{z^3}{3^s} + \dots \end{align}
\begin{align} g_{3/2}(1) &=\zeta\left(\frac{3}{2}\right),\;g_{5/2}(1)=\zeta\left(\frac{5}{2}\right) \end{align}
\begin{equation} \label{eq:T_def} \frac{T}{T_{c}} =\left(\frac{g_{5/2}(1)}{g_{3/2}(z)}\right)^{2/3},\;\mathrm{ahol}\;z=e^{\beta\mu}\;\mathrm{\acute{e}s\;0\leq z \leq 1} \end{equation}

A $g_s(z)$ függvény:

In [7]:
Npoint =200

zlist=linspace(0,1,Npoint) #mintavételezési pontok legyártása

g3p2=[]
g5p2=[]

for i in range(0,len(zlist)):
    poly1=float(mpmath.polylog(1.5,1))
    poly2=float(mpmath.polylog(1.5,zlist[i]))
    poly3=float(mpmath.polylog(2.5,zlist[i]))
    
    g3p2.append(poly2)
    g5p2.append(poly3)
    
In [8]:
figsize(xfig_meret,yfig_meret)
plot(zlist,g3p2,label='$g_{3/2}(z)$',lw=3,color='red'),
plot(zlist,g5p2,label='$g_{5/2}(z)$',lw=3,color='blue',ls='--')
legend(loc='upper left',fontsize=legend_meret)

xlabel('$z$',fontsize=xylabel_meret)
ylabel('$g_{3/2}(z), g_{5/2}(z)$',fontsize=xylabel_meret);
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_10.eps');  # Abra kimentese

Az alábbiakban az $N$ részecskeszám rögzített.

In [9]:
Npoint =100
Tlist_down=linspace(0.0,1,Npoint) #mintavételezési pontok legyártása

pV_down=[]   #  p-T gorbehez
mu_down=[]
Elist_down=[]
Slist_down=[]
cV_down=[]
kappa_S_down=[]
vhang_down=[]
cV_deriv_down=[]

for i in range(0,len(Tlist_down)):
    
    mu_down.append(0)
    
    zeta3p2=float(mpmath.polylog(1.5,1))
    zeta5p2=float(mpmath.polylog(2.5,1))
    tmp1=zeta5p2/zeta3p2
    
    Elist_down.append(3/2*(Tlist_down[i])**(5/2)*tmp1)    # energia
    pV_down.append((Tlist_down[i])**(5/2)*tmp1)  # pV = 2/3 E 
    
    Slist_down.append(5/2*(Tlist_down[i])**(3/2)*tmp1)    #  entropia
    cV_down.append(15/4*Tlist_down[i]**(3/2)*tmp1)
    kappa_S_down.append(3/5*(Tlist_down[i]+0.00001)**(-5/2)/tmp1)
    vhang_down.append(sqrt(5/3*tmp1*(Tlist_down[i])**(5/2)))
    cV_deriv_down.append(45/8*tmp1*(Tlist_down[i])**(1/2))
    
In [10]:
Npoint =100
zmin=0.3
zlist=linspace(zmin,1,Npoint) #mintavételezési pontok legyártása

Tlist_up=[]

pV_up=[]
mu_up=[]
mu_approx=[]
Elist_up=[]
Slist_up =[]
cV_up=[]
cp_up=[]
kappa_S_up=[]
kappa_T_up=[]
alpha_up=[]
cp_cV_up=[]
vhang_up=[]
cV_deriv_up=[]

epsi=0.0000000000001

for i in range(0,len(zlist)):
    z=zlist[i]
    
    zeta3p2=float(mpmath.polylog(1.5,1))
    poly3p2=float(mpmath.polylog(1.5,z))
    poly5p2=float(mpmath.polylog(2.5,z))
    poly1p2=float(mpmath.polylog(0.5,z-epsi)) # z=1-nel ROSSZ erteket ad a polylog!!! 
            # Itt a vegtelen ertek a helyes. 
            # A hiba kijavitasa miatt irunk 'z-0.0000001'.    
    polym1p2=float(mpmath.polylog(-0.5,z-epsi))
    
    tmp1=(zeta3p2/poly3p2)**(2/3)  
    Tlist_up.append(tmp1)    #   homerseklet
     
    mu_up.append(tmp1 * log(z))   #  kemiai potencial
    mu_approx.append(-(3*zeta3p2/4/sqrt(pi))**2*(tmp1-1)**2)
    
    tmp2=3/2*tmp1*poly5p2/poly3p2  # energia
    Elist_up.append(tmp2)
    
    pV_up.append(tmp1*poly5p2/poly3p2)   # pV = 2/3 E
    
    Slist_up.append(5/2*poly5p2/poly3p2-log(z))        # entropia
    cV_up.append(15/4*poly5p2/poly3p2-9/4*poly3p2/poly1p2)   #  c_V fajfo
    cp_up.append(25/4*poly5p2**2*poly1p2/(poly3p2)**3-15/4*poly5p2/poly3p2) # c_p fajho
    kappa_S_up.append(3/5*poly3p2/poly5p2/tmp1) 
    # kappa_S kompreszibilitas
    kappa_T_up.append(poly1p2/poly3p2/tmp1) 
    # kappa_T kompreszibilitas
    alpha_up.append((5/2*poly5p2*poly1p2/(poly3p2)**2-3/2)/tmp1) 
    # alpha_T hotagulasi egyutthato 
    cp_cV_up.append(5/3*poly5p2*poly1p2/(poly3p2)**2) 
    # alpha_T hotagulasi egyutthato 
    vhang_up.append(sqrt(5/3*poly5p2/poly3p2*tmp1)) 
    # v_hang  hangsebesseg  
    cV_deriv_up.append((45/8*poly5p2/poly3p2-9/4*poly3p2/poly1p2 
                       -27/8*(poly3p2)**2 *polym1p2/(poly1p2)**3)/tmp1)
    # c_V derivaltja T-szerint fajho
    
    
    #print((zlist[i],tmp1,tmp2))  
    
In [11]:
Tlist_egybe=concatenate((Tlist_down,Tlist_up[::-1]))  # Tlist_egybe
Eklassz=[x*1.5 for x in Tlist_egybe]  # Eklassz
CVklassz=[1.5 for x in Tlist_egybe]   # C_V_klassz
Cpklassz=[2.5 for x in Tlist_egybe]   # C_p_klassz

A kémiai potenciál hőmérsékletfüggése:

\begin{align} & \frac{\mu}{k_{\mathrm{B}}T_{c}} =\frac{T}{T_{c}}\,\ln(z), \label{eq:mu_def} \\ & \mu_{\mathrm{k\ddot {o}z}} \approx -{\left(\frac{3\,\zeta(\frac{3}{2})}{4\,\sqrt{\pi}}\right)}^2 {\left(\frac{T}{T_c}-1\right)}^2, \; \mathrm{ha} \; T \,>T_c. \label{eq:mu-koz_def} \end{align}
In [12]:
nslice=50     #  
muapprox1=mu_approx[-nslice:]  # az lista utolso 'nslice' darab tagjat tartja meg
Tapprox1=Tlist_up[-nslice:]    # az lista utolso 'nslice' darab tagjat tartja meg

muapprox =muapprox1[0::5]
Tapprox = Tapprox1[0::5]

figsize(xfig_meret,yfig_meret)
legend_meret1=0.8*legend_meret

plot(Tlist_up,mu_up,label='$\mu, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,mu_down,label='$\mu, \,\, T<T_c$',lw=3,color='blue',ls='--')

plot(Tapprox,muapprox,label='$\mu_{k\ddot {o}z}, \,\, T>T_c$',lw=1,ls='-',marker='o',color='k',markersize=5)

legend(loc='upper right',fontsize=legend_meret1)

annotate(r'$\mu_{k\ddot {o}z}$'
         ,xy=(1.9,-1.2),  xytext=(1.2, -2.5), arrowprops=dict(color='green',width=.5),fontsize=legend_meret)

axhline(y=0.0, xmin=0, xmax = 4, linewidth=0.6, ls='dashed', color='k')
axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')

xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{\mu(T)}{k_B T_c}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

ylim(-5,.5)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_15.eps');  # Abra kimentese

Az energia hőmérsékletfüggése:

\begin{equation} E(T)=\begin{cases} \frac{3}{2}\, Nk_{\mathrm{B}}T_{c}\left(\frac{T}{T_{c}}\right)\, \frac{g_{5/2}(z)}{g_{3/2}(z)}, & T \, >T_c, \\[2ex] \frac{3}{2}\, Nk_{\mathrm{B}}T_{c} \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle 5/2}}\, \frac{\zeta(5/2)}{\zeta(3/2)}, & T< \, T_c . \end{cases} \end{equation}
In [13]:
#  High temperature approximation 

Npoint =30
tminH=2.5
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
Elist_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    Elist_approxH.append(-1/2/sqrt(2*pi*tt)+3/2*tt)    # energia
In [14]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,Elist_up,label='$E, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,Elist_down,label='$E, \,\, T<T_c$',lw=3,color='blue',ls='--')
plot(Tlist_egybe,Eklassz,color='black',lw=3,linestyle='dotted',label=r'$E_{\mathrm{klassz}}$')
plot(Tlist_High,Elist_approxH,color='green',
     lw=3,linestyle='--',
     label=r'$E_\mathrm{high}(t) \approx \frac{3t}{2}-\frac{1}{2\sqrt{2\pi}}\, \frac{1}{\sqrt{t}}$')

legend(loc='lower right',fontsize=legend_meret);

axvline(x=1.0, linewidth=2, ls='dotted', color='k')

xlabel(r'$t={T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{E}{N k_B T_c}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

ax = gca()
ax.yaxis.set_label_coords(-.1, 0.65);  #  ylabel position 
#title(r'$E(T)$ ', fontsize=20)
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_20.eps');  # Abra kimentese

Izotermák:

\begin{equation} p(V)= \begin{cases} \frac{Nk_{\mathrm{B}}T}{V}\, \frac{g_{5/2}(z)}{g_{3/2}(z)}, & V \, >V_c\\[2ex] p_0 = \frac{k_{\mathrm{B}}T}{\lambda_T^3}\, \zeta(5/2),\, & V< \,V_c , \quad \mathrm{ahol} \end{cases} \end{equation}
\begin{align} \lambda_T &= \frac{h}{\sqrt{2\pi m k_{\mathrm{B}}T}}, \,\,\, \,\,\, \frac{V_c}{N} = \frac{\lambda_T^3}{\zeta(5/2)} \end{align}

a termikus de Broigle-hullámhossz és a kritikus térfogat.

Ha $V<V_c$, akkor $p$ nem függ $V$-től, ekkor $p_0 \sim T^{5/2}$.

Adiabata egyenlete: $p_0 V_c^{5/3}$ = állandó

In [15]:
Npoint =30

Vmax=9
T1=1
Vc1=3
p1=1
p2=2
Vc2=(p1/p2)**(3/5)*Vc1

Vlist1_up=linspace(Vc1,Vmax,Npoint) #mintavételezési pontok legyártása
Vlist2_up=linspace(Vc2,Vmax,Npoint) #mintavételezési pontok legyártása

Vlist1_down=linspace(0,Vc1,Npoint) #mintavételezési pontok legyártása
Vlist2_down=linspace(0,Vc2,Npoint) #mintavételezési pontok legyártása

izoterm1_up=[p1/x *Vc1 for x in Vlist1_up]  # izoterma T>T_c-re
izoterm2_up=[p2/x *Vc2 for x in Vlist2_up]  # izoterma T>T_c-re

izoterm1_down=[p1 for x in Vlist1_down]  # izoterma T<T_c-re
izoterm2_down=[p2 for x in Vlist2_down]  # izoterma T<T_c-re

Vlist_full=linspace(Vc2/2,Vmax,Npoint)
pfv=[p1*(Vc1/x)**(5/3) for x in Vlist_full]  # adiabata p-V sikon

figsize(xfig_meret,yfig_meret)
plot(Vlist1_up,izoterm1_up,label='$p_1(V), \,\, T>T_c$',lw=3,color='red')
plot(Vlist2_up,izoterm2_up,label='$p_2(V), \,\, T>T_c$',lw=3,color='red')
plot(Vlist1_down,izoterm1_down,label='$p_{01}(V), \,\, T<T_c$',lw=3,color='blue',ls='--')
plot(Vlist2_down,izoterm2_down,label='$p_{02}(V), \,\, T<T_c$',lw=3,color='blue',ls='--')

plot(Vlist_full,pfv,label='$p_0 V^{5/3}=$const',lw=3,color='k',ls='dotted')

legend_meret1=0.8*legend_meret
legend(loc='upper right',fontsize=legend_meret1)

annotate(r'$V_{c1}$', xy=(1.5,2.), xytext=(Vc1,-0.35),fontsize=xylabel_meret)
annotate(r'$V_{c2}$', xy=(1.5,2.), xytext=(Vc2,-0.35),fontsize=xylabel_meret)

annotate(r'$p_{01}$', xy=(1.5,2.), xytext=(-1.2,p1),fontsize=xylabel_meret)
annotate(r'$p_{02}$', xy=(1.5,2.), xytext=(-1.2,p2),fontsize=xylabel_meret)

yfelso_scale=1.2
axvline(x=Vc1, ymin=0., ymax=p1/p2/yfelso_scale, linewidth=2, ls='dotted', color='k')
axvline(x=Vc2, ymin=0., ymax=1/yfelso_scale, linewidth=2, ls='dotted', color='k')


xlabel('$V$',fontsize=xylabel_meret)
ylabel(r'$p$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

ylim(0,yfelso_scale*p2)
ax = gca()
ax.yaxis.set_label_coords(-0.1, 0.65)  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_25.eps');  # Abra kimentese

$p - T$ diagram:

\begin{equation} pV= \frac{2}{3}\, E = \begin{cases} Nk_{\mathrm{B}}T_{c}\left(\frac{T}{T_{c}}\right)\, \frac{g_{5/2}(z)}{g_{3/2}(z)}, &T \, >T_c\\[2ex] Nk_{\mathrm{B}}T_{c} \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle 5/2}}\, \frac{\zeta(5/2)}{\zeta(3/2)}, &T< \,T_c . \end{cases} \end{equation}
In [16]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,pV_up,label='$pV, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,pV_down,label='$pV, \,\, T<T_c$',lw=3,color='blue',ls='--')

legend(loc='lower right',fontsize=legend_meret)

annotate(r'$\mathrm{el\acute {e}rhetetlen \,\,\, tartom\acute {a}ny}$', 
         xy=(1.8,2.), xytext=(0.3, 2.2),fontsize=legend_meret)
annotate(r'$\mathrm{Bose-g\acute {a}z}$', xy=(1.5,2.), xytext=(2.5, 1.6),fontsize=legend_meret)

axhline(y=0.0, xmin=0, xmax = 4, linewidth=0.6, ls='dashed', color='k')
axvline(x=1.0, ymin=0.0, ymax = .30, linewidth=2, ls='dotted', color='k')

xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{pV}{Nk_B T_c}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,3.5)
ylim(0,3)
ax = gca()
ax.yaxis.set_label_coords(-.12, 0.53);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_30.eps');  # Abra kimentese

Az entrópia hőmérsékletfüggése:

\begin{equation} \frac{S(T)}{Nk_{\mathrm{B}}}=\begin{cases} \frac{5}{2}\:\frac{g_{5/2}(z)}{g_{3/2}(z)}-\mathrm{ln}(z), & T> \,T_{c}\\[2ex] \frac{5}{2}\,\frac{\zeta(5/2)}{\zeta(3/2)}\, \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle 3/2}}, & T \, < \, T_{c}. \end{cases} \end{equation}
In [17]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,Slist_up,label='$S, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,Slist_down,label='$S, \,\, T<T_c$',lw=3,color='blue',ls='--')
legend(loc='lower right',fontsize=legend_meret)

axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')

xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{S}{N k_B}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_35.eps');  # Abra kimentese

Az állandó térfogaton vett fajhő hőmérsékletfüggése:

\begin{equation} \frac{C_{V}(T)}{Nk_{\mathrm{B}}}=\begin{cases} \frac{15}{4}\,\frac{g_{5/2}(z)}{g_{3/2}(z)}-\frac{9}{4}\,\frac{g_{3/2}(z)}{g_{1/2}(z)}, & T \,> \, T_{c}\\[2ex] \frac{15}{4}\,\frac{\zeta(5/2)}{\zeta(3/2)}\, \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle 3/2}}, & T \, < \,T_{c}. \end{cases} \end{equation}
In [18]:
#  High temperature approximation 

Npoint =30
tminH=2.5
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
cV_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    cV_approxH.append(3/2+tt**(-3/2)/4/sqrt(2*pi))    # c_V fajho
    
In [19]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,cV_up,label='$C_V, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,cV_down,label='$C_V, \,\, T<T_c$',lw=3,color='blue',ls='--')
plot(Tlist_egybe,CVklassz,color='black',linestyle='dotted',label=r'$C_V^{\mathrm{klassz}}$')
plot(Tlist_High,cV_approxH,color='green',
     lw=3,linestyle='--',
     label=r'$C_{V,\mathrm{high}}(t) \approx \frac{3}{2}+\frac{t^{-3/2}}{4\sqrt{2\pi}}$')

legend(loc='lower right',fontsize=legend_meret)

annotate(r'$\frac{15\,\zeta(5/2)}{4\,\zeta(3/2)} \approx 1.926$', 
         xy=(1.1,1.926), xytext=(2.3, 1.94),
         arrowprops=dict(color='green',width=.5),fontsize=legend_meret)
axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')

xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{C_V}{N k_B}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

ylim(0,2.3)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53)  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_40.eps');  # Abra kimentese

$\frac{\partial C_V(T)}{\partial T}$ hőmérsékletfüggése:

\begin{equation} \frac{\partial C_V(T)}{\partial T} = \, \begin{cases} \frac{Nk_{\mathrm{B}}}{T}\, \left( \frac{45}{8}\,\frac{g_{5/2}(z)}{g_{3/2}(z)} -\frac{9}{4}\,\frac{g_{3/2}(z)}{g_{1/2}(z)} -\frac{27}{8}\,\frac{{\left[g_{3/2}(z)\right]}^{2} g_{-1/2}(z)}{\left[g_{1/2}(z)\right]^{3}}\right), &T \,>T_c,\\[2ex] \frac{Nk_{\mathrm{B}}}{T_c} \, \frac{45 \zeta(5/2)}{8 \zeta(3/2)}\, \left(\frac{T}{T_c}\right)^{{\scriptscriptstyle 1/2}}, &T< \,T_c . \end{cases} \end{equation}
\begin{equation} \label{eq:CV-ugras} \left. \frac{\partial C_V}{\partial T}\right|_{T=T_c-0} -\left. \frac{\partial C_V}{\partial T}\right|_{T=T_c+0} = \frac{27}{16\pi}\, \frac{Nk_{\mathrm{B}}}{T_c}\, {\left[\zeta\left(\frac{3}{2}\right)\right]}^2 \approx 3.666\, \frac{Nk_{\mathrm{B}}}{T_c} \end{equation}
In [20]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,cV_deriv_up,label=r'$\frac{\partial c_V(T)}{\partial T}, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,cV_deriv_down,label=r'$\frac{\partial c_V(T)}{\partial T}, \,\, T<T_c$',lw=3,color='blue',ls='--')

legend_meret1=0.8*legend_meret
legend(loc='center right',fontsize=legend_meret1)

annotate(r'$\frac{45\,\zeta(5/2)}{8\,\zeta(3/2)} \approx 2.889 $', xy=(1.1,1.), 
         xytext=(1.2, 3.),fontsize=legend_meret1)

annotate(r'$\frac{9}{16}\, {\left[-\frac{3}{\pi}\, \zeta(3/2)^2+\frac{10 \zeta(5/2)}{\zeta(3/2)}\right]} \approx -0.777 $', xy=(1.1,1.), 
         xytext=(1.8, -0.65),fontsize=legend_meret1)

axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')
axhline(y=2.8885, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')
axhline(y=0, xmin=0, xmax = 2, linewidth=1, ls='-', color='k')
axhline(y=-0.777261, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')


xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{T_c}{Nk_{\mathrm{B}}}\, \frac{\partial c_V(T)}{\partial T}$',
       fontsize=xylabel_meret,rotation ='vertical')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,4)
ylim(-1.5,3.6)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45)  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_45.eps');  # Abra kimentese

Az állandó nyomáson vett fajhő hőmérsékletfüggése:

\begin{equation} \frac{C_{p}(T)}{Nk_{\mathrm{B}}}=\frac{25}{4}\, \frac{{\left[g_{5/2}(z)\right]}^{2} g_{1/2}(z)}{\left[g_{3/2}(z)\right]^{3}} -\frac{15}{4}\,\frac{g_{5/2}(z)}{g_{3/2}(z)},\; T \, >T_{c} \end{equation}

$T <T_c$ esetén a $c_p$ fajhő nincs értelmezve, mert ekkor $p =$ állandó, és így $T=$ állandó

In [21]:
#  High temperature approximation 

Npoint =30
tminH=2.5
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
cp_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    cp_approxH.append(5/2*(1+tt**(-3/2)/2/sqrt(2*pi)))    # c_p fajho
In [22]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,cp_up,label='$C_p, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_egybe,Cpklassz,color='black',linestyle='dashed',label=r'$C_p^{\mathrm{klassz}}$')
plot(Tlist_High,cp_approxH,color='green', lw=3,linestyle='--',
     label=r'$C_{p,\mathrm{high}}(t) \approx \frac{5}{2}\left(1+\frac{t^{-3/2}}{2\sqrt{2\pi}} \right)$')

legend(loc='upper right',fontsize=legend_meret)

annotate(r'$\frac{5}{2} $', xy=(.5,2.4), xytext=(-0.25, 2.3),fontsize=legend_meret)

axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')

axhline(y=2.5, xmin=0, xmax = 4, linewidth=2, ls='dashed', color='k')


xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{C_p}{N k_B}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

ylim(0,10)
ax = gca()
ax.yaxis.set_label_coords(-0.08, 0.65);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_50.eps');  # Abra kimentese

Adiabatikus kompresszibilitás hőmérsékletfüggése:

$\kappa_S =-\frac{1}{V}\, \left. \frac{\partial V}{\partial p}\right| _{S,N}$

\begin{equation} \kappa_S(T) =\frac{1}{n k_{\mathrm{B}}T_c}\, \begin{cases} \frac{3 g_{3/2}(z)}{5 g_{5/2}(z)}\, \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle -1}}&T \, >T_c\\[2ex] \frac{3 \zeta(3/2)}{5 \zeta(5/2)}\, \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle -5/2}}, &T< \,T_c , \end{cases} \end{equation}

ahol $n=N/V$.

In [23]:
#  High temperature approximation 

Npoint =20
tminH=1.1
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
kappaS_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    kappaS_approxH.append(3/5/tt )    # kappa_S
In [24]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,kappa_S_up,label=r'$\kappa_S, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,kappa_S_down,label=r'$\kappa_S, \,\, T<T_c$',lw=3,color='blue',ls='--')
plot(Tlist_High,kappaS_approxH,color='green', lw=3,linestyle='--',
     label=r'$\kappa_{S,\mathrm{high}} \approx \frac{3}{5t}$')

legend(loc='upper right',fontsize=legend_meret)

annotate(r'$\frac{3\,\zeta(3/2)}{5\,\zeta(5/2)} \approx 1.17$', xy=(1.1,1.5), 
         xytext=(2.3, 1.6),fontsize=legend_meret)

xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\kappa_S(T)\, n k_B T_c$',fontsize=xylabel_meret,rotation ='vertical')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')
axhline(y=1.17, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')

xlim(0,4)
ylim(0,10)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_55.eps');  # Abra kimentese

Izotermikus kompresszibilitás hőmérsékletfüggése:

$\kappa_T =-\frac{1}{V}\, \left. \frac{\partial V}{\partial p}\right| _{T,N}$

\begin{equation} \kappa_T(T) =\frac{1}{n k_{\mathrm{B}}T}\, \frac{g_{1/2}(z)}{g_{3/2}(z)},\;T \,>T_{c}, \end{equation}

ahol $n= N/V$.

$T <T_c$ esetén a $c_p$ fajhő nincs értelmezve, mert ekkor $p =$ állandó, és így $T=$ állandó

In [25]:
#  High temperature approximation 

Npoint =20
tminH=1.1
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
kappaT_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    kappaT_approxH.append(1/tt )    # kappa_T
In [26]:
figsize(xfig_meret,yfig_meret)

kappaTklassz_fv=[1/x for x in Tlist_up]   # alpha_klassz
nslice=70     

kappaTklassz=kappaTklassz_fv[0:nslice+1]  # az lista utolso 'nslice' darab tagjat tartja meg
Tapprox=Tlist_up[0:nslice+1]    # az lista utolso 'nslice' darab tagjat tartja meg


plot(Tlist_up,kappa_T_up,label=r'$\kappa_T, \,\, T>T_c$',lw=3,color='red')
plot(Tlist_High,kappaT_approxH,color='green', lw=3,linestyle='--',
     label=r'$\kappa_{T,\mathrm{high}} \approx \frac{1}{t}$')

plot(Tapprox,kappaTklassz,color='black',linestyle='dashed',label=r'$\kappa_T^{\mathrm{klassz}}$')

legend(loc='upper right',fontsize=legend_meret)

axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')

annotate(r'$\kappa_T^{\mathrm{klassz}}=\frac{1}{T/T_c}$', 
         xy=(1.6,0.7), xytext=(.09, 2.),
         arrowprops=dict(color='green',width=.3),fontsize=legend_meret)

xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\kappa_T(T)\, n k_B T_c$',fontsize=xylabel_meret,rotation ='vertical')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,4)
ylim(0,10)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_60.eps');  # Abra kimentese

Hőtágulási együttható hőmérsékletfüggése:

$\alpha_T =\frac{1}{V}\, \left. \frac{\partial V}{\partial T}\right| _{p,N}$

\begin{equation} \alpha_{T}(T) =\frac{1}{T}\, \left(\frac{5}{2}\, \frac{g_{5/2}(z) g_{1/2}(z)}{\left[g_{3/2}(z)\right]^{2}}-\frac{3}{2}\right), \;T \, >T_{c} \end{equation}

$\alpha_T^{\mathrm{klassz}}(T) = 1/T$, magashőmérsékleti közelítés

$T <T_c$ esetén a $c_p$ fajhő nincs értelmezve, mert ekkor $p =$ állandó, és így $T=$ állandó

In [27]:
#  High temperature approximation 

Npoint =50
tminH=1.5
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
alpha_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    alpha_approxH.append(1/tt +5*tt**(-5/2)/6/sqrt(2*pi) )    # alpha
    
In [28]:
alphaklassz_fv=[1/x for x in Tlist_up]   # alpha_klassz
nslice=50     

alphaklassz=alphaklassz_fv[0:nslice+1]  # az lista utolso 'nslice' darab tagjat tartja meg
Tapprox=Tlist_up[0:nslice+1]    # az lista utolso 'nslice' darab tagjat tartja meg

figsize(xfig_meret,yfig_meret)
plot(Tlist_up,alpha_up,label=r'$\alpha_T, \,\, T>T_c$',lw=3,color='red')
plot(Tlist_High,alpha_approxH,color='green', lw=3,linestyle='--',
     label=r'$\alpha_{T,\mathrm{high}} \approx \frac{1}{t}+\frac{5 t^{-5/2}}{6\sqrt{2\pi}}$')


plot(Tapprox,alphaklassz,color='black',linestyle='dashed',label=r'$\alpha_T^{\mathrm{klassz}}$')

annotate(r'$\alpha_T^{\mathrm{klassz}}=\frac{1}{T/T_c}$', 
         xy=(2.2,0.4), xytext=(0.07, 0.4),
         arrowprops=dict(color='green',width=.5),fontsize=legend_meret)

legend(loc='upper right',fontsize=legend_meret)

#axhline(y=1.17, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')
axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')


xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\alpha_T T_c$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,4)
ylim(0,3)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.52);  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_65.eps');  # Abra kimentese

$\frac{C_p}{C_V}$ hőmérsékletfüggése:

\begin{equation} \frac{C_p}{C_V} = \frac{5}{3}\,\frac{g_{5/2}(z) g_{1/2}(z)}{\left[g_{3/2}(z)\right]^{2}}, \;T \,>T_{c} \end{equation}

$T <T_c$ esetén a $c_p$ fajhő nincs értelmezve, mert ekkor $p =$ állandó, és így $T=$ állandó

In [29]:
#  High temperature approximation 

Npoint =20
tminH=2.
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
cp_cV_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    cp_cV_approxH.append(5/3*(1+tt**(-3/2)/3/sqrt(2*pi)))    # c_p/c_V fajho arany
In [30]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,cp_cV_up,label=r'$\frac{C_p}{C_V}, \,\, T>T_c$',lw=3,color='red')
plot(Tlist_High,cp_cV_approxH,color='green', lw=3,linestyle='--',
     label=r'$\frac{C_p}{C_V} \approx \frac{5}{3}\left(1+\frac{t^{-3/2}}{3\sqrt{2\pi}} \right)$')


legend(loc='upper right',fontsize=legend_meret)

axhline(y=1.666, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')
axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')
annotate(r'$\frac{5}{3}$',  xy=(1.1,1.926), 
         xytext=(-.25, 1.5),fontsize=legend_meret)


xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{C_p}{C_V}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,4)
ylim(0,6)
ax = gca()
ax.yaxis.set_label_coords(-.07, 0.52)  #  ylabel position 
grid()

#avefig('Fig_Bose_gas/fig_Bose-gaz_70.eps');  # Abra kimentese

Hangsebesség hőmérsékletfüggése:

$v_{\mathrm{hang}}(T) =\sqrt{\left. \frac{\partial p}{\partial \varrho}\right|_{S,N}} = \sqrt{\frac{V}{m N}\, \frac{1}{\kappa_S}}$, ahol $\varrho = m N/V$ a tömegsűrűség.

\begin{equation} \frac{v_{\mathrm{hang}}(T)}{\sqrt{\frac{k_{\mathrm{B}}T_c}{m}}} = \, \begin{cases} \sqrt{\frac{5 g_{5/2}(z)}{3 g_{3/2}(z)}\,\left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle -1}}}, &T \,>T_c,\\[2ex] \sqrt{\frac{5 \zeta(5/2)}{3 \zeta(3/2)}\, \left(\frac{T}{T_{c}}\right)^{{\scriptscriptstyle -5/2}}}, &T< \,T_c . \end{cases} \end{equation}
In [31]:
#  High temperature approximation 

Npoint =50
tminH=2.5
tmaxH=4

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
vhang_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    vhang_approxH.append(sqrt(10/3/pi)/12*(-1/tt + 12* sqrt(tt*pi/2)))    # vhang
In [32]:
figsize(xfig_meret,yfig_meret)

plot(Tlist_up,vhang_up,label=r'$v_{\mathrm{hang}}, \,\, T>T_c$',lw=3,color='red')

plot(Tlist_down,vhang_down,label=r'$v_{\mathrm{hang}}, \,\, T<T_c$',lw=3,color='blue',ls='--')
plot(Tlist_High,vhang_approxH,color='green', lw=3,linestyle='--',
     label=r'$v_{\mathrm{hang,high}} \approx \sqrt{\frac{5 t}{3}}- \frac{1}{6}\, \sqrt{\frac{5}{6\pi}}\, \frac{1}{t}$')


legend(loc='upper left',fontsize=legend_meret)

legend_meret1=0.8 * legend_meret
annotate(r'$\sqrt{\frac{5\,\zeta(5/2)}{3\,\zeta(3/2)}} \approx 0.925$', xy=(1.1,1.), 
         xytext=(2., 1.),fontsize=legend_meret1)

axvline(x=1.0, ymin=0.0, ymax = 20, linewidth=2, ls='dotted', color='k')
axhline(y=0.925, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')


xlabel('${T}/{T_c}$',fontsize=xylabel_meret)
ylabel(r'$\frac{v(T)}{\sqrt{k_{\mathrm{B}T_c}}}$',
       fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);


ylim(0,2.7)
ax = gca()
ax.yaxis.set_label_coords(-.12, 0.56)  #  ylabel position 
grid()

#savefig('Fig_Bose_gas/fig_Bose-gaz_75.eps');  # Abra kimentese

Irodalom:

R. K. Pathria: Statistical Mechanics, 2nd Edition, 1996, Bunerworth-Heinemann Linacre House

Linda E. Reichl: A Modern Course in Statistical Physics 2rd Edition, 1998, Wiley-VCH

Franz Schwabl: Statistical Mechanics, 2000, Springer-Verlag, Berlin

K. Huang: Statistical Mechanics, 2nd Edition, 1987, John Wiley & Sons